package com.enjoyor.soa.traffic.api.service.dubbo.gps;

import java.util.Date;
import java.util.List;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 报警服务
 */
public interface AlarmService {
	
	/**
	 * 监听报警信息
	 * @param listener 监听类
	 * @deprecated 弃用，请使用  {@link NotifyListener}
	 * @return
	 */
	public void addListener(AlarmListener listener);
	

	/**
	 * 查询报警信息
	 * @param locid 设备ID (空字符串:全部)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @param alarmType 查询报警类型：null:全部，1:进入围栏报警，2:出界报警，...
	 * @param page		分页信息
	 * @return
	 */
	public ResultPojo getAlarmInfo(String locid,Date startTime,Date endTime,Integer alarmType,Page page);
	/**
	 * 查询报警信息
	 * @param listLocid 设备号列表 (为空时，查询所有设备)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @param alarmType 查询报警类型：(AlarmTypeEnum 中的值)
	 * @param page		分页信息
	 * @return
	 */
	public ResultPojo getAlarmInfo(List<String> listLocid,Date startTime,Date endTime,Integer alarmType,Page page);
	/**
	 * 查询报警信息
	 * @param listTransboundaryId 针对特定的围栏产生的报警(为空或null时，查询所有)
	 * @param listLocid 设备号列表 (为空null时，查询所有设备)
	 * @param listAlarmType 查询报警类型(AlarmTypeEnum 中的值；为空或null时，查询所有)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @param page		分页信息
	 * @return
	 */
	public ResultPojo getAlarmInfo(List<Integer> listTransboundaryId,List<String> listLocid,List<Integer> listAlarmType,Date startTime,Date endTime,Page page);
	
	/**
	 * 查询一次越界的轨迹（注意：若数据过多，则只返回前1000条记录。）
	 * @param locid 设备ID (非空)
	 * @param ALarmTime 越界时间 (非空)
	 * @return
	 */
	public ResultPojo getAlarmTrack(String locid,Date alarmTime);

	/**
	 * 查询一次越界的轨迹，分页查询
	 * @param locid 设备ID (非空)
	 * @param ALarmTime 越界时间 (非空)
	 * @param page		分页信息
	 * @return
	 */
	public ResultPojo getAlarmTrack(String locid,Date alarmTime,Page page);

}
